#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
const int maxn=21;
struct node{
    string data;
    int lchild;
    int rchild;
}Node[maxn];
bool vis[maxn]={false};

void dfs(int root){
    if(root==-1)return;
    if(Node[root].lchild==-1 && Node[root].rchild==-1){cout<<Node[root].data;return;}
    if(Node[root].rchild!=-1){
        printf("(");
        dfs(Node[root].lchild);
        cout<<Node[root].data;
        dfs(Node[root].rchild);
        printf(")");
    }
    else{
        dfs(Node[root].lchild);
        cout<<Node[root].data;
        dfs(Node[root].rchild);
    }
}

int main(){
    //freopen("in.txt","r",stdin);

    int n;
    scanf("%d",&n);
    string data;int left,right;
    for(int i=1;i<=n;i++){
        cin>>Node[i].data;
        scanf("%d %d",&Node[i].lchild,&Node[i].rchild);
        if(Node[i].lchild!=-1){vis[Node[i].lchild]=true;}
        if(Node[i].rchild!=-1){vis[Node[i].rchild]=true;}
    }
    int root;
    for(int i=1;i<=n;i++){
        if(vis[i]==false){
            root=i;break;
        }
    }
    dfs(Node[root].lchild);
    printf("%s",Node[root].data.c_str());
    dfs(Node[root].rchild);
}
